Automated Presentation of directory src/demos/GL/buttonfly/menus/

HUB | Up | Download | Pheedbak | Tree | Topic | A-Z | Search | Hot | New


Please be aware: what appears below are the v4.2 DT bits in auto-generated html form.
As we have the time, we will update these to reflect the current "state of the world".


README file from "menus" directory

     This directory contains menu files used by the buttonfly program.

     This example illustrate an easy-to-configure method of creating a
     button heirarchy.

     Note that the ".menu" file in this directory is the top-level
     menu for the first button encountered after starting up the demo.  
     All the ".menu" files that live beneath this directory conform to
     this methodology to produce nested levels of buttons.

     To run this example, the entire <toolbox>/src/demos and
     <toolbox>/data subtrees must be available.

     What follow is a liberal extract from the buttonfly(6D) man page on
     how to configure Buttonfly to better customize it to fit your needs.


RECONFIGURING BUTTONFLY

     Buttonfly's menus were designed to be simple to change with any UNIX
     text editor (such as vi ).  When it is run with no arguments, it looks
     for button descriptions in a file called '.menu' in the current
     directory.  If it is given one argument, it will look in that file
     for button definitions instead.

     Buttonfly uses a very simple format to describe its buttons.  The
     format has four different kinds of lines: comments, titles, actions,
     and commands.

     Any line beginning with a '#' character is considered a comment and is
     ignored.

     Button titles, like comments, always start in the first column of the
     file, and may be anything not starting with a '#'.  Titles may be a
     maximum of 36 characters long; buttonfly will automatically separate the
     title into a maximum of three lines of twelve characters, separating
     words in the title at spaces.

     Action lines start with a tab and end with a newline, and may be any
     UNIX command.  Multiple actions may be specified for a button by listing
     them after the button one per line, each starting with a tab.  Actions
     may not span more than one line, but may be any length.  If no actions
     are speci- fied for a button, the button is displayed, but nothing will
     happen when it is selected.

     Commands, like actions, start with a tab character.  Currently, the
     commands recognized are '.menu.', '.popup.', '.cd.', '.color.',
     '.backcolor.', and '.highcolor.'.  Everything else is assumed to be an
     action and will be executed as a UNIX command in a shell (see sh(1)).

     The special action called '.menu.' is used to specify a button that has
     several buttons attached to the back of it.  When buttonfly sees '.menu.
     filename' it will create a new set of buttons from the descriptions in
     'filename'.  If it cannot find 'filename' in the current directory, then
     nothing happens.  If 'filename' is '-', then the new set of buttons is
     created from the standard output of the previous actions (see example
     below).  Note that any 'cd' commands in an action list do not affect the
     directory in which buttonfly looks for the filenames specified in
     '.menu.' commands, becuase actions are executed in a sub-shell (see the
     '.cd.' command below).

     Another special actions is '.popup.'.  It is used to define a pop-up
     menu entry attached to a button.  When buttonfly sees '.popop. title'
     it adds an entry 'title' to the button's pop-up menu.  The actions
     following a .popup. command will be executed when that menu entry is
     chosen.  Buttonfly automatically provides a 'Do It' entry, which has
     the same effect as pressing the left mouse button.

     The '.cd.' action is used to change buttonfly's idea of the current
     working directory.  When the button containing the .cd. command is
     pressed, buttonfly will chdir into that directory before executing
     that button's actions, and all buttons underneath that button will
     also be executed in that directory (unless they also have .cd. commands).
     Note that executing the regular 'cd' shell command in a button does not
     affect buttonfly's idea of the current working directory, since all
     button actions are executed in their own shell environment.

     The command '.color.' followed by three numbers in the range 0.0 ... 1.0
     specifies the red, green and blue components of a button's color, and
     '.highcolor' does the same for the color of the button as it is being
     selected.  '.backcolor.' changes the color of the back of the button,
     which becomes the background color of the next set of buttons (displayed
     when the button flips over).  Note that using color commands at the top
     of a file, before any buttons have been defined, causes the default
     colors to be changed for all subsequent buttons.  To change the
     background color to red for the first button and all subsequent
     buttons you would specify:

          .backcolor. 1.0 0.0 0.0

     in the menu description file before any buttons are defined.

EXAMPLES

     The following are example buttonfly .menu files, with descriptions of
     what they do.

     This is a very simple button called 'First' that has the buttons defined
     in the file '.menu_second' on the back of it.

          First
               .menu. .menu_second

     Here are three buttons.  The 'Parent' button is purple and will flip
     over and display the other two buttons when pressed (they will be
     displayed on a purple background, since that is the color on the back
     of the first button).  The 'Demonstrate...' button changes directories
     and then runs a program when pressed, and 'Recurse' flips over and shows
     the first button again, this time on a blue background since the
     '.backcolor.' command changes the background color to blue.

          #Save this in a file called '.menu'
          Parent
               .color. .89 .10 .89
               .backcolor. .89 .10 .89
               .highcolor. 1.0 .5 1.0
               .menu. child

          #Save the following buttons in a file called 'child'
          Demonstrate GL/NeWS Interface
               cd /usr/NeWS/demo
               glnews
          Recurse
               .backcolor. 0.0 0.0 1.0
               .menu. .menu

     Here is a very complicated button, which builds a button file based
     on the files it finds in a directory full of files.  When pressed,
     it builds the file and then uses .menu.  to flip over, exposing entries
     for all the files it found.  Note that this allows you to delete or add
     image files, and the buttons will always be accurate.  It also has a
     pop-up menu on it giving help; the first .popup command specifies the
     title of the menu using the %t feature of Silicon Graphics menus.

          Show An Image
               cd /usr/demos/data/images
          #The following two lines must all be on the
          # same line in the .menu file
               /bin/ls *.rgb | awk 'BEGIN{FS="."}{print "Show " $1
          "\n\tipaste /usr/demos/data/images/" $0 "\n"}'
               .menu. -
               .popup. ShowImage Menu %t
               .popup. Ipaste Man Page
               wsh -c man ipaste

BUGS

     Buttonfly will not work if the first character of a file is a TAB
     followed by anything other than .color., .backcolor., or .highcolor.
     It is safest to eliminate any blank lines from the files you create.

     Buttonfly may crash if given an arbitrary file as input.

     The maximum number of buttons on any level of the hierarchy is 32.

     If a program fails to run, nothing happens-- no error messages or
     warnings are given.  This can be considered either a feature or a bug.

     Specifying %F, %f, %x, or %m as part of a .popup. title will give bad
     results, and may crash the program.  Using %t to specify a title works,
     but any actions specified for that entry will never be executed (since
     it is impossible to select a title entry).

FILES

     /usr/demos/.m* are the button files the demos use.


Files of interest from "src/demos/GL/buttonfly/menus" directory

Documentation

Subdirectories


Select any combo of files you'd like to send yourself a compressed tar image of. Executables/scripts are indicated with a trailing `*' character. (Depending upon the browser, it may be necessary to hold down the Ctrl key to select/deselect disjoint items.) a compressed tar image of the above-selected items.
OR, ...
a compressed tar image of the entire menus directory.

Copyright © 1995, Silicon Graphics, Inc.